<?php

function buscar_por_query_categoria($query, $categoriaId, $tipo_cat, $pagination, $records_per_page, $orden){

	   $where = crearSentenciaWhereConMacheoFullText($query);
	   $where = agregarAND($where);
	   $where = agregarIgualdadCiudad($where);
	   $where = agregarAND($where);
	   $where = agregarIgualdadCategoria($where, $categoriaId);
	   $where = agregarAND($where);
	   $where = agregarIgualdadTipoAnuncio($where, $tipo_cat);

	   $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM publicaciones ".$where;
      
       $sql = agregarOrdenAQuery($sql, $orden);
       $sql = agregarLimitesDePaginacionAQuery($sql, $pagination, $records_per_page);
       
       return $sql;
 }
 
 function buscar_por_query_categoria_todo_el_pais($query, $categoriaId, $tipo_cat, $pagination, $records_per_page, $orden){
 
 	$where = crearSentenciaWhereConMacheoFullText($query);
 	$where = agregarAND($where);
 	$where = agregarIgualdadCategoria($where, $categoriaId);
 	$where = agregarAND($where);
 	$where = agregarIgualdadTipoAnuncio($where, $tipo_cat);
 
 	$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM publicaciones ".$where;
 
 	$sql = agregarOrdenAQuery($sql, $orden);
 	$sql = agregarLimitesDePaginacionAQuery($sql, $pagination, $records_per_page);
 	 
 	return $sql;
 }
 
 function agregarIgualdadCiudad($where){
 	 return $where." ciudad_id=".CIUDAD_ID;
 }
 
 function agregarAND($where){
 	return $where." AND ";
 }
 
 function agregarIgualdadCategoria($where, $categoriaId){
 	
 	return $where." categoria_id=".$categoriaId;
 	
 }
 
 function agregarIgualdadTipoAnuncio($where, $tipo_cat){
 	
 	
 	if ($tipo_cat == 'compra-venta'){
 		$categoria = 'C';
 	} elseif ($tipo_cat == 'servicios'){
 		$categoria = 'S';
 	} elseif ($tipo_cat == 'inmuebles'){
 		$categoria = 'I';
 	} elseif ($tipo_cat == 'vehiculos'){
 		$categoria = 'V';
 	} elseif ($tipo_cat == 'empleos'){
 		$categoria = 'E';
 	} elseif ($tipo_cat == 'turismo'){
 		$categoria = 'T';
 	} elseif ($tipo_cat == 'clases-cursos'){
 		$categoria = 'L';
 	}
 	
 
 	return $where." tipoanuncio='".$categoria."'";
 
 }
 

function buscar_por_query($query, $pagination, $records_per_page, $orden){

       $where = crearSentenciaWhereConMacheoFullText($query);
       $where = agregarAND($where);
       $where = agregarIgualdadCiudad($where);

       $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM publicaciones ".$where;       
              
       $sql = agregarOrdenAQuery($sql, $orden);
       $sql = agregarLimitesDePaginacionAQuery($sql, $pagination, $records_per_page);
            
       return $sql;
}

function buscar_por_query_todo_el_pais($query, $pagination, $records_per_page, $orden){

	$where = crearSentenciaWhereConMacheoFullText($query);

	$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM publicaciones ".$where;

	$sql = agregarOrdenAQuery($sql, $orden);
	$sql = agregarLimitesDePaginacionAQuery($sql, $pagination, $records_per_page);

	return $sql;
}

function buscar_todo_el_pais($pagination, $records_per_page, $orden){

	//$where = crearSentenciaWhereConMacheoFullText($query);

	$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM publicaciones ORDER BY publicacion_id DESC";

	//$sql = agregarOrdenAQuery($sql, $orden);
	$sql = agregarLimitesDePaginacionAQuery($sql, $pagination, $records_per_page);

	return $sql;
}

function buscar_todo_ciudad($pagination, $records_per_page, $orden){

	//$where = crearSentenciaWhereConMacheoFullText($query);

	$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM publicaciones WHERE ";

	$sql = agregarIgualdadCiudad($sql);
	$sql = agregarOrdenAQuery($sql, $orden);
	$sql = agregarLimitesDePaginacionAQuery($sql, $pagination, $records_per_page);

	return $sql;
}

function crearSentenciaWhereConMacheoFullText($query){
	$query = mysql_real_escape_string($query);
	return  "WHERE MATCH(titulo) AGAINST ('$query')";
}

function agregarLimitesDePaginacionAQuery($sql, $pagination, $records_per_page){
	return $sql." LIMIT " . (($pagination->get_page() - 1) * $records_per_page) . ", " . $records_per_page;
}

function agregarOrdenAQuery($sql, $orden){
	if (!empty($orden)){
		if($orden=='mayor_precio'){
			$sql = $sql." ORDER BY precio DESC";
		} elseif ($orden=='menor_precio'){
			$sql = $sql." ORDER BY precio";
		}
	}
	return $sql;
}


function crearSentenciaWhereParteMacheoTituloConKeywords($query){
	$keywords = mysql_real_escape_string(htmlentities(trim($query)));
	 
	$keywords = preg_split('/[\s]+/', $keywords);
	$total_keywords = count($keywords);
	$where = "WHERE ";
	
	foreach($keywords as $key=>$keyword){
		$where .= "`titulo` LIKE '%$keyword%'";
		if($key != ($total_keywords - 1)){
			$where .= " OR ";
		}
	}
	
	return $where;
}

function buscar_por_categoria($categoriaId, $tipo_cat, $pagination, $records_per_page, $orden){

     $sql= "SELECT SQL_CALC_FOUND_ROWS * FROM publicaciones WHERE";
     $sql = agregarIgualdadCategoria($sql, $categoriaId);
     $sql = agregarAND($sql);
     $sql = agregarIgualdadTipoAnuncio($sql,$tipo_cat);
     $sql = agregarAND($sql);
     $sql = agregarIgualdadCiudad($sql);
     
     $sql = agregarOrdenAQuery($sql, $orden);
     $sql = agregarLimitesDePaginacionAQuery($sql, $pagination, $records_per_page);
     
     return $sql;
}

function buscar_por_categoria_todo_el_pais($categoriaId, $tipo_cat, $pagination, $records_per_page, $orden){	
	
	$sql= "SELECT SQL_CALC_FOUND_ROWS * FROM publicaciones WHERE";;
	
	if (!empty($tipo_cat)){
	$sql = agregarIgualdadTipoAnuncio($sql,$tipo_cat);
	}
	
	if (!empty($categoriaId)){
	$sql = agregarAND($sql);
	$sql = 	agregarIgualdadCategoria($sql,$categoriaId);
	}
		 
	$sql = agregarOrdenAQuery($sql, $orden);
	$sql = agregarLimitesDePaginacionAQuery($sql, $pagination, $records_per_page); 	
	
	return $sql;
}

function buscar_por_usuario($usuarioId, $pagination, $records_per_page){

       $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM publicaciones WHERE usuario_id=".$usuarioId . " ORDER BY publicacion_id DESC";
                
       $sql = agregarLimitesDePaginacionAQuery($sql, $pagination, $records_per_page);
     
       return $sql;
}

function guardar_consulta($query){
	
	$query = mysql_real_escape_string($query);
	
	$sql = "INSERT INTO busquedas (busqueda) values ('$query')";
	mysql_query($sql);
}


?>

